An Input/Output (I/O) channel subsystem is used to transfer information between I/O devices and the main storage of a host processor. An I/O channel, for example, may connect the host directly to a mass storage device (e.g., disk or tape drive). In the case of a mainframe host processor, the channel is usually coupled to one or more device controllers. Each device controller is in turn connected to a plurality of mass storage devices.
The I/O channel subsystem typically has an independent I/O processor which asynchronously controls the movement of data between the external devices and system memory. This allows data processing by an execution unit to proceed simultaneously with I/O operations. By offloading the low-level I/O management tasks from the execution unit to the I/O processor, system throughput is enhanced.
I/O channel subsystems use distinct physical media and I/O protocols that differ from the communications media and protocols used in communications networks. Throughout the 1980's, the typical I/O subsystem in large processing systems used a copper "bus and tag" medium and a parallel channel protocol. Parallel channels were limited in distance to about 130 meters between the host and an attached device. In recent years, the use of fiber optic I/O channels and serial I/O protocols has gained wide acceptance. These channels have advantages of higher data rate and longer allowable separation between the host and the attached devices.
An exemplary serial I/O channel protocol is defined in the ESCON I/O Interface specification, Document No. SA22-7402-02, published by IBM Corporation, 1991, which is incorporated herein by reference for its teachings on I/O channel protocols. ESCON.TM. is a trademark of the IBM corporation.
In the ESCON protocol, as in other protocols, information is transmitted by the channel organized into frames. The frames include control information (e.g., source address, destination address, pacing information for dynamically adjusting the flow of frames in both directions, link control information, etc.) and may contain user defined data. Link-Control frames are exchanged between a host and a device controller to establish and maintain a logical connection between them. Device level frames control I/O operations and are used to transfer data. All of the frames include a start-of-frame (SOF) delimiter, a header, a cyclical redundancy checksum (CRC) and an end-of-frame (EOF) delimiter. Data frames include user defined data after the header.
An SOF may be a connect SOF (CSOF), which establishes a dynamic link, or a passive SOF (PSOF), which is sent if a dynamic link is already established. An EOF may be a passive EOF (PEOF), a disconnect EOF (DEOF) or an abort EOF (AEOF). A PEOF is sent if the dynamic link will remain connected after the EOF is sent. A DEOF causes disconnection of the dynamic link after processing the frame that ended with the DEOF. An AEOF, or abort delimiter, is sent if the sender detects an error condition and is unable to complete the transmission of a normal frame. The recipient of a frame ending with an AEOF discards the frame.
The ESCON.TM. protocol specifies use of a defined set of 10 bit sequences forming normal "D" data characters and special "K" characters. The K and D characters are defined in U.S. Pat. No. 4,486,739 to Franaszek et al., which is hereby incorporated by reference therefore. The D characters are encoded from/decoded into eight bit combinations. The K characters only have meaning within "ordered sets". The ordered sets include K characters and combinations of K and D characters in predetermined sequences. These ordered sets provide for delineation of frames, control of I/O links (between host I/O subsystem and device I/O subsystem), and synchronization between sender and recipient.
U.S. Pat. No. 5,133,078 to Minassian et al. describes a serial frame processing system for processing incoming data asynchronously from the circuits in which the data are later processed. An In Buffer Fill State Machine checks the frame, including the CRC characters for validity and stores the frame in an Input Buffer (IB). An In Frame State Machine (IFRSM) extracts portions of the frame from the IB for decoding and moves the remaining portion of the data into an output buffer.
Minassian et al. describe checking incoming frames (checking the CRC and ensuring that the frame includes an SOF and an EOF) while the Device Information Block (DIB) is being received. Additional processing of incoming frames which is asynchronous from the operations of the microprocessor controlling the channel is desired.